package com.easymin.weixin.common;

import org.apache.commons.lang3.StringUtils;


/**
 * <p>
 * Copyright 2013 成都易米网络科技有限公司. All Rights Reserved
 * <ul>.
 * <li>网址: <a href="http://www.easymin.com">http://www.easymin.com</a></li>
 * <li>电话: 028-61703886</li>
 * </ul>
 * </p>
 * <p>
 * 判断是否为图片
 * </p>
 *
 * @author FZH
 * @version 1.0.0
 */
public final class MediaUtil {

  /**
   * 工具类不需要实例化.
   */
  private MediaUtil() {
  }

  /**
   * 判断是否为图片.
   *
   * @param file 要判断的文件名
   * @param ext  判断标识 如只传bmp则验证是否为bmp格式的图片，否则就验证是否为图片
   * @return true是图片, false不是图片
   */
  public static boolean isPicture(final String file, final String ext) {
    if (StringUtils.isBlank(file)) {
      return false;
    }
    // 获得文件后缀名
    String tmpName = file.substring(file.lastIndexOf(".") + 1,
            file.length());
    // 声明图片后缀名数组
    String[][] extArray = {
            {"bmp", "0"},
            {"gif", "1"},
            {"jpeg", "2"},
            {"jpg", "3"},
            {"png", "4"}
    };

    for (int i = 0; i < extArray.length; i++) {
      // 判断单个类型文件
      if (!StringUtils.isBlank(ext)
              && extArray[i][0].equals(tmpName.toLowerCase())
              && extArray[i][1].equals(ext)) {
        return true;
      }
      // 判断符合全部类型
      if (StringUtils.isBlank(ext)
              && extArray[i][0].equals(tmpName.toLowerCase())) {
        return true;
      }
    }
    return false;
  }

  /**
   * 判断是否为Flash.
   *
   * @param file 要判断的文件名
   * @param ext  判断标识
   * @return true是Flash, false不是Flash
   */
  public static boolean isFlash(final String file, final String ext) {
    if (StringUtils.isBlank(file)) {
      return false;
    }
    // 获得文件后缀名
    String tmpName = file.substring(file.lastIndexOf(".") + 1,
            file.length());
    // 声明图片后缀名数组
    String[][] extArray = {
            {"swf", "0"}

    };

    for (int i = 0; i < extArray.length; i++) {
      // 判断单个类型文件
      if (!StringUtils.isBlank(ext)
              && extArray[i][0].equals(tmpName.toLowerCase())
              && extArray[i][1].equals(ext)) {
        return true;
      }
      // 判断符合全部类型
      if (StringUtils.isBlank(ext)
              && extArray[i][0].equals(tmpName.toLowerCase())) {
        return true;
      }
    }
    return false;
  }

  /**
   * 判断是否为视频类型.
   *
   * @param file 要判断的文件名
   * @param ext  判断标识
   * @return true是视频文件, false不是视频文件
   */
  public static boolean isVideo(final String file, final String ext) {
    if (StringUtils.isBlank(file)) {
      return false;
    }
    // 获得文件后缀名
    String tmpName = file.substring(file.lastIndexOf(".") + 1,
            file.length());
    // 声明图片后缀名数组
    String[][] extArray = {
            {"avi", "0"},
            {"rmvb", "1"},
            {"rm", "2"},
            {"mp4", "3"},
            {"mid", "4"},
            {"3gp", "5"},
            {"wmv", "6"},
            {"asf", "7"},
            {"mov", "8"},
            {"dat", "9"},
            {"mpg", "10"},
            {"mpeg", "11"}
    };

    for (int i = 0; i < extArray.length; i++) {
      // 判断单个类型文件
      if (!StringUtils.isBlank(ext)
              && extArray[i][0].equals(tmpName.toLowerCase())
              && extArray[i][1].equals(ext)) {
        return true;
      }
      // 判断符合全部类型
      if (StringUtils.isBlank(ext)
              && extArray[i][0].equals(tmpName.toLowerCase())) {
        return true;
      }
    }
    return false;
  }

  /**
   * 判断是否为音频类型.
   *
   * @param file 要判断的文件名
   * @param ext  判断标识
   * @return true是音频文件, false不是音频文件
   */
  public static boolean isAudio(final String file, final String ext) {
    if (StringUtils.isBlank(file)) {
      return false;
    }
    // 获得文件后缀名
    String tmpName = file.substring(file.lastIndexOf(".") + 1,
            file.length());
    // 声明图片后缀名数组
    String[][] extArray = {
            {"mp3", "0"},
            {"wma", "1"},
            {"wave", "2"},
            {"ape", "3"},
            {"flac", "4"},
            {"ogg", "5"},
            {"aac", "6"}
    };

    for (int i = 0; i < extArray.length; i++) {
      // 判断单个类型文件
      if (!StringUtils.isBlank(ext)
              && extArray[i][0].equals(tmpName.toLowerCase())
              && extArray[i][1].equals(ext)) {
        return true;
      }
      // 判断符合全部类型
      if (StringUtils.isBlank(ext)
              && extArray[i][0].equals(tmpName.toLowerCase())) {
        return true;
      }
    }
    return false;
  }
}
